#Region "Copyright (c) 2007 by Gerhard Kreuzer"
'/*--------------------------------------------------------------------------------------------------
' *  PostSharp, a post-compiler for the .NET Platform
' *  by Gael Fraiteur and community, http://www.postsharp.org
'*
' *  This sample is provided by DI Gerhard Kreuzer, www.liftoff.at
' *  ------------------------------------------------------------------------------------------------
' *  Version: MPL 1.1/GPL 2.0/LGPL 2.1
' *  
' *  The contents of this file are subject to the Mozilla Public License Version 
' *  1.1 (the "License"); you may not use this file except in compliance with 
' *  the License. You may obtain a copy of the License at 
' *  http://www.mozilla.org/MPL/
' *  
' *  Software distributed under the License is distributed on an "AS IS" basis,
' *  WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
' *  for the specific language governing rights and limitations under the
' *  License.
' *  
' *  The Original Code is any part of this file that is not marked as a contribution.
' *  
' *  The Initial Developer of the Original Code is Gerhard Kreuzer
' *  Portions created by the Initial Developer are Copyright (C) 2007
' *  the Initial Developer. All Rights Reserved.
' *  
' *  Contributor(s): None.
' *  
' *  Alternatively, the contents of this file may be used under the terms of
' *  either the GNU General Public License Version 2 or later (the "GPL"), or
' *  the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
' *  in which case the provisions of the GPL or the LGPL are applicable instead
' *  of those above. If you wish to allow use of your version of this file only
' *  under the terms of either the GPL or the LGPL, and not to allow others to
' *  use your version of this file under the terms of the MPL, indicate your
' *  decision by deleting the provisions above and replace them with the notice
' *  and other provisions required by the GPL or the LGPL. If you do not delete
' *  the provisions above, a recipient may use your version of this file under
' *  the terms of any one of the MPL, the GPL or the LGPL.
' *--------------------------------------------------------------------------------------------------
' */
#End Region

Imports PostSharp.Laos

Module Program

    Sub Main()
        Console.WriteLine("PostSharp  Liftoff.CacheAspect  (VB)")
        Console.WriteLine()
        Console.WriteLine("Role out a long running operation, use cached values, if possible  ....")
        Console.WriteLine()

        Dim obj As New SomeBusinessObject
        Dim a, b As Integer
        Dim stpWatch As New Stopwatch
        a = 1
        b = 1
        For i As Integer = 0 To 4
            stpwatch.Reset()
            stpwatch.Start()
            Console.WriteLine("Please calculate: {0} + {1} = {2}", a, b, obj.DoSomethingComplex(a, b))
            stpwatch.Stop()
            Console.WriteLine("Execution takes {0} ms", stpwatch.ElapsedMilliseconds)
            Console.WriteLine()
            b = (i Mod 2) + 1
        Next

        Console.WriteLine()
        Console.WriteLine("Cache statistics:      Hits: {0}    Faults: {1}", CacheAspect.Hits, CacheAspect.Faults)

        'Wait for user input to close console window
        Console.WriteLine()
        Console.WriteLine("Please press <Enter> to exit this sample.")
        Console.Read()
    End Sub

End Module
